package math;

import java.util.ArrayList;
import java.util.List;

/**
 * 给定一个正整数 n。
 * 返回 任意两位数字 相乘所得的 最大 乘积。
 * 注意：如果某个数字在 n 中出现多次，你可以多次使用该数字。
 * <p>
 * 示例 1：
 * 输入： n = 31
 * 输出： 3
 * 解释：
 * n 的数字是 [3, 1]。
 * 任意两位数字相乘的结果为：3 * 1 = 3。
 * 最大乘积为 3。
 * <p>
 * 示例 2：
 * 输入： n = 22
 * 输出： 4
 * 解释：
 * n 的数字是 [2, 2]。
 * 任意两位数字相乘的结果为：2 * 2 = 4。
 * 最大乘积为 4。
 * <p>
 * 示例 3：
 * 输入： n = 124
 * 输出： 8
 * 解释：
 * n 的数字是 [1, 2, 4]。
 * 任意两位数字相乘的结果为：1 * 2 = 2, 1 * 4 = 4, 2 * 4 = 8。
 * 最大乘积为 8。
 *
 * @author Jisheng Huang
 * @version 20250504
 */
public class MaxProductOfTwoDigits_Q1 {
    /**
     * Create a list to store each digit. Calculate the product of each two digits
     *
     * @param n the given integer
     * @return the max product of two digits
     */
    public static int maxProduct(int n) {
        List<Integer> list = new ArrayList<>();

        while (n > 0) {
            list.add(n % 10);
            n /= 10;
        }

        if (list.size() < 2) {
            return 0;
        }

        int max = 0;

        for (int i = 0; i < list.size(); ++i) {
            for (int j = i + 1; j < list.size(); ++j) {
                int prod = list.get(i) * list.get(j);
                max = Math.max(prod, max);
            }
        }

        return max;
    }

    public static void main(String[] args) {
        System.out.println(maxProduct(31));
        System.out.println(maxProduct(22));
        System.out.println(maxProduct(124));
    }
}
